package com.inspinia.upms.rpc.api;


import com.inspinia.base.service.BaseService;
import com.inspinia.upms.common.model.role.UpmsRole;

import java.util.List;

/**
 * 角色业务层
 * 
 * @author ruoyi
 */
public interface UpmsRoleService extends BaseService<UpmsRole> {
    /**
     * 验证角色名称
     *
     * @param roleName
     * @param roleId
     * @return
     */
    boolean validateName(String roleName, Long roleId);

    /**
     * 获取角色已分配的资源
     *
     * @param roleId 角色id
     * @return
     */
    List<Long> getResources(Long roleId);

    /**
     * 给角色分配资源
     *
     * @param resourceIds 资源id集合
     * @param roleId 角色id
     * @return
     */
    int setResources(Long[] resourceIds, Long roleId);

//    Pager<Role> findPage(int pageNo, int pageSize);

    List<UpmsRole> findByIds(List<Long> roleIds);

    List<UpmsRole> findAll();


    /**
     * 获取所有角色
     *
     * @return
     */
    List<UpmsRole> findAll(List<Long> depts);
    /**
     * 查找用户的角色名称
     *
     * @param userId 用户id
     * @return
     */
    List<String> findRoleNamesByUserId(Long userId);

    /**
     * 根据角色名称得到角色的id
     *
     * @param roleName 角色名称
     * @return 角色id
     */
    Long getIdByRoleName(String roleName);

    /**
     * 找出用户id集合中属于某个角色的用户
     *
     * @param userIds 用户id集合
     * @param roleId  期望的角色id
     * @return 用户id集合
     */
    List<Long> findOutUserIsRole(List<Long> userIds, Long roleId);
    /**
     * 查找角色下的所有用户id
     *
     * @param roleId 角色id
     * @return
     */
    List<Long> findUserIdsByRoleId(Long roleId);
    /**
     * 查找用户的所有角色
     *
     * @param userId
     * @return
     */
    List<UpmsRole> findRoleByUserId(Long userId);
    /**
     * 删除角色相关的
     */
    @Override
    int delete(Long id);
}
